"""
重新整理股票数据
"""

# if __name__ == "__main__":的用法是，如果代码是被直接运行则执行下面代码，否则不执行

import pickle
import pandas as pd


class Read(object):

    def __init__(self):
    # 读取本地股票数据
    file_path = "./data.pkl"
    with open(file_path, "rb") as f:
        stock_data = pickle.load(f)
    # 日期的列表
    date_list = list(stock_data.keys())
    # 股票代码列表，现在一共是24只
    stock_code_list = stock_data[date_list[0]].index
    # 重新整理股票数据，按股票代码划分，value是本质股票所有日期的数据

    # 1.空dict，用来存放整理好的股票数据
    new_dict = {}

    for code in stock_code_list:
        line1 = stock_data[date_list[0]].loc[code, :]  # 新的DataFrame的第一行
        line1.name = date_list[0]  # 令它的名称为日期，以便于之后以日期为index
        new_pd = line1  # 新的DataFrame

        for date in date_list:
            if date != date_list[0]:  # 之前已经有了line1了
                date_detail = stock_data[date]  # 这一交易日的详细数据，其中有24只股票
                today_info = date_detail.loc[code, :]  # 提取出本只股票当日的信息
                today_info.name = date  # 重命名

                new_pd = pd.concat([new_pd, today_info], axis=1)  # 形成新的DataFrame
        new_pd = new_pd.T  # 转置

        new_dict[code] = new_pd  # 生成新的dict，keys是股票代码，values是DataFrame

    # 写入新的pkl文件，节省时间
    try:
        with open("./new_data.pkl", "wb") as n:
            pickle.dump(new_dict, n)
    except Exception as res:
        print("出现的错误是：%s" % res)
